home *** CD-ROM | disk | FTP | other *** search
- struct __va_struct { int fixed[12]; int floating[8]; };
-
- typedef struct __va_ctl
- {
- struct __va_struct *regs;
- void *stack;
- int nfixed, nfloating;
- } va_list;
-
- #define va_alist
-
- #define va_dcl
-
- #define va_start(pvar) \
- (memcpy (&(pvar), (struct __va_ctl *) __builtin_saveregs (), 80))
- #define va_end(pvar)
-
- #define va_arg(pvar,type) \
- ({ type __va_temp; \
- *((__builtin_classify_type (__va_temp) < 8 \
- && sizeof __va_temp < 8) \
- ? ((pvar).nfixed < 12 \
- ? (type *) &(pvar).regs->fixed[(pvar).nfixed++] \
- : ({ \
- int temp \
- = ((int) ((pvar).stack + __alignof__ (type) - 1) \
- & ~(__alignof__ (type) - 1)); \
- (pvar).stack = (void *) (temp + sizeof (type)); \
- (type *) temp; \
- })) \
- : __builtin_classify_type (__va_temp) < 9 \
- ? ((pvar).nfloating < 8 \
- ? ((pvar).nfloating \
- = (((pvar).nfloating + 2 * (sizeof __va_temp / 4) - 1) \
- & ~(sizeof __va_temp / 4 - 1)), \
- (type *) &(pvar).regs->floating[(pvar).nfloating - (sizeof __va_temp / 4)]) \
- : ({ \
- int temp \
- = ((int) ((pvar).stack + __alignof__ (type) - 1) \
- & ~(__alignof__ (type) - 1)); \
- (pvar).stack = (void *) (temp + sizeof (type)); \
- (type *) temp; \
- })) \
- : ({ \
- int temp \
- = ((int) ((pvar).stack + __alignof__ (type) - 1) \
- & ~(__alignof__ (type) - 1)); \
- (pvar).stack = (void *) (temp + sizeof (type)); \
- (type *) temp; \
- })); })
-